package com.example.xunai.service.conversation;

import com.example.xunai.dto.response.conversation.MessageResponse;
import com.example.xunai.entity.ConversationMessage;

import java.util.List;

/**
 * 对话消息服务接口
 */
public interface ConversationMessageService {

    /**
     * 保存消息
     */
    ConversationMessage saveMessage(ConversationMessage message);

    /**
     * 批量保存消息
     */
    List<ConversationMessage> saveAll(List<ConversationMessage> messages);

    /**
     * 根据对话ID获取所有消息，按turn升序排列
     */
    List<ConversationMessage> getMessagesByConversationId(Long conversationId);

    /**
     * 根据对话ID获取所有消息响应，按turn升序排列
     */
    List<MessageResponse> getMessageResponsesByConversationId(Long conversationId);

    /**
     * 获取对话的最后一条消息的turn
     */
    Integer getLastTurnByConversationId(Long conversationId);

    /**
     * 根据ID获取消息
     */
    ConversationMessage getMessageById(Long id);

    /**
     * 根据ID获取消息响应
     */
    MessageResponse getMessageResponseById(Long id);

    /**
     * 删除消息
     */
    void deleteMessage(Long id);

    /**
     * 根据对话ID删除所有消息
     */
    void deleteMessagesByConversationId(Long conversationId);
}